home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * you have to define a long constant
- * _MY_MAGIC "MAGI"
- * to identify your program
- *
- */
-
- #ifndef _XBRA_H
- #define _XBRA_H
-
- typedef void (*xptr)();
-
- typedef struct _Xbra
- {
- long xbra_magic;
- long my_magic;
- xptr next;
- short jump;
- void (*this) ();
- } XBRA_STRUCT;
-
- #define _XBRA_MAGIC 0x58425241L /* "XBRA" */
- //#define _MY_MAGIC 0x00000000
- #define _JMP_OPCODE 0x4EF9
- #define _JSR_OPCODE 0x4EB9
-
- #define _XBRA_VEC(x) ( (void (*)()) &(x.jump) )
-
- #define _XBRA_INIT(fn) { \
- _XBRA_MAGIC, \
- _MY_MAGIC, \
- (xptr) 0, \
- _JMP_OPCODE, \
- (void (*)()) fn \
- }
-
- #define _TRAP_VEC(n,x) ((void (*) ()) (((long) n << 24) | (long) &(x.jump)))
-
- #define _TRAP_INIT(fn) { \
- _XBRA_MAGIC, \
- _MY_MAGIC, \
- (xptr) 0, \
- _JSR_OPCODE, \
- (void (*)()) fn \
- }
- #endif /* _XBRA_H */
-